@L|}6CD l0C)HCC WhL/h `CmCDiD`  R@P1  Y0@R !L` D  C D     )16CS S)  C)D1 p p 0 C9DI pCDL~CiCDiD` D  C D     )16CS S)  C)D1 p p }0 C9DI pCDL~CiCDiD` DD˙` d J)L !}D L(( LL()  L| L( S LH 0p n  } CY?  q  L L  ` )} `A! d߰")-݆ "  $G@LLL&0") $G% }H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0 })8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH) }  hyhyB q L> Lm JJ  Ln*` dB%' }8  H H` 1 { LL   !L     Hh SY?  q  1L }  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF } G) *Gȩ GȽG GȌd q q G`  8   0G  `D}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y}`piH n0)բY? 08`0 }  0$L GGȽG L `8L`L}8`  05G)݁G)ȱGȱGHh0})Hh` B! 8`8iiiLE`}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR}1LJ舩9GIH`LJJ`HGHh l`} S gL   8 rii `дCDCG W  }C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}}me  |||DDOS DOSDOS SYS }}}}CDOS SYS} 0`BDELV !B }`LVUQ   ]   TU J ]L!T  #      TU  } L ? .  t`GBJ V~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI   0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -'}LLu DEHILV 9 .l 9 .l  `` s$B VBH(}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVL)}1u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2e*}1i1232435ޥ<<8q} 3E:}DISK OPERATING SYSTEM II VERSION 2.0SCOPYRIGHT 1980 ATARIA. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDGE J. D,}UPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRESSF. LOCK F-}ILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES9!&x#!7&p))'&X*./)L''-؆莟.}R'S  vW DEHHI 1A#! @ ~0ɛ8A0.) ȅ 1 1i/}il ! 1L NO SUCH ITEMSELECT ITEM OR FOR MENU! 0 .{z:*{}.|~ 1 0 00}JB 18L^%|DLl%DIRECTORY--SEARCH SPEC,LIST FILE? # 0 0 n&|D! 1L NOT A DISK FILE1}N !B 1L " 1 !BDED:}:1BJ|DE 1DEBH2}I 1 h0ߢ 0.  0?詛 1 ~0YЛ 1 "L<" "L 3} BL1TYPE "Y" TO DELETE...DELETE FILE SPECCOPY--FROM, TO?OPTION NOT ALLOWED COPYING---DN:4}# 0|D .L$A#B#C#JB|DE 1BHIDD#E 1D#0: B5} 1L B#C#C#B# B 1N#$0SYS1}:e#D# d# D# .d#ȽD# d# 𩛙d#X# 1,A#6}PdD#ELO- A.BJdD#E 1 1HH 0hh|DL^%1}:e# Lt% e#dD#EL%7} 1 0 . .0% 1L WILD CARDS NOT ALLOWED IN DESTINATION 0 A.|K@C}//3Hu ξL/L DRIVE TO WRITE DOS FILES TO?WRITING NEW DOS FILESTYPE "Y" TO WRITE DOS TO DRIVE 2.?}D2:DOS.SYSERROR - NOT VERSION 2 FORMAT. , &* բ( 1L `[) 0NΞ 0 L1M) 1@} L BAD LOAD FILELOAD FROM WHAT FILE?) 0 0#B 1L WHAT FILE TO LOCK?) 0 0$B 1L WHAT FILE TO UNLOCK?DUA}P DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO USE PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV. h  ,B}  `)  <0 2 2 0  ,   ,,ޢ* 1L ,K* 1 ~0 0C}FINSERT BOTH DISKS, TYPE RETURNERROR - DRIVES INCOMPATIBLE., 1 ~038  , 1L D}, &*  Lz+, 0 , 1 ~0 + Y,0!,0 ,L+ ,mm  v,"ǭE}0Ξ, 05,Lt+L +,Hh` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNF}INSERT DESTINATION DISK,TYPE RETURN`    `L,8,0( rG}L1(`ߢ) 1* 1 ~0Y`hhL S SL1) 8`NAME OF FILE TO MOVE?- 0 0|DLtH}% A., 1 <0 0 .@L# .BJ 1  DEHIB V L1 ,5 1 <0,L. I} JB|,A#Pd#DE 1 HI BDEHHII 1 B 1 , 1 <0,0Lf- B VJ},A#P, 1 <0 0L#L ߢ) 1* 1 ~0Yj383}mm ݭK}}`8}``|* ? ɛ,`|:(|/ 1L `DESTINATION CANT L}BE DOS.SYS0 0H{ $22Δ $28/L /) $2 Π $2 0 ξM}hAΞB,0 J 1 BޝDEHI,HDE 1HIHIDELSAVE-N}GIVE FILE,START,END(,INIT,RUN)O X0 1`BDEPHI V` X0H 1 L O}0 0 1L0`PLEASE TYPE 1 LETTER,0`hhL <0 1L0LA1 ,;ɛ7,"ɛ:ݦ1ݥP}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{Q}NAME TOO LONG B VL ` L1I H1EӝDL1|mDiE` V0`8d/8 i:"2!22 1R} L ERROR- 144ɛ+,' 20*.. өw2 1``2TOO MANY DIGITSINVALIDS} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4;uT} HEXADECIMAL PARAMETER800 0 8 00`,0'D800H,ɛh`2L1NEED D1 THRU D4;u888888ffffff~~`~~fl0fF>6xo~{>>888>|||f<Y}c6>8pp8?Z}w><~~~<||`x`~<~~<[}0~0 ~ <~~<~~f~``~~f~~~``~~~f~~f~`~~~~f~~``~~ff8888<>>``f||f88<<w\}wk~~fff~~ff~~~f~``~~f~~~```~`~~~~fff~~ff~<ckwf~<~fff~~~~~0~<~~<]}~x|ngTTTTTTfff~~`~~fl0fF>6xo~{>>888>|||f<' for output going to the screen and by a '*' for output going to the printer. This routine also looks fo}r matches across sector boundaries.6: Search Sector Range Same as above but the scan algorithm compares for a match in t}he last three bytes in a sector and works with a range of sectors instead of a sector chain.rithm compares for a match in t^DISK FILE INFORMATIONWHAT HAPPENS WHEN YOU INITIALIZEWhen you tell the computer to initialize a disk the computer begins }to build a 'road map' on the disk to keep track of the data that will be added later. It does this by putting a series of con}centric magnetic rings on the disk something like the rings on a tree each one a complete circle and the inside circles small}er than those on the outside. These circles are called TRACKS and are split up into 18 pieces called SECTORS. Each sector can} contain either 128 or 256 bytes of data this being dependant on type of disk system you are using. Sectors are the storage a}reas where the computer will put your data. During the initialization these are all set to some initial value, ($1A for ATARI} DOS). All sectors are not created equal however, some sectors have special functions, require extra handling, and have prede}fined locations on the disk. These sectors are used for housekeeping and to tell the computer how to load the DOS. The locati}ons are; sector 1-3 first stage DOS boot, sector $168(360) Bit map, and $169-$170 (361-368) the directory. Each of these will} be explained in the following sections.THE BIT MAPThe bit map, or VOTC (Volume Table of Contents), is where the computer } keeps track of what sectors are used, how many sectors the disk contains, and how many free sectors remain. For ATARI DOS th }e first byte of the bit map should be 0. Bytes 1 & 2, (low, high byte order) represent the maximum capacity of the disk, and  }bytes 3 & 4 contain the maximum space currently free. (Note: this is where the DOS looks when it gives you the # of free sect }ors in a display file command.)$0000: $00 $C502 $3001Maximum Capacity is $2C5 (bytes 2,1)Number of Free Sectors is $130 } (bytes 4,3)Bytes 5-9 are not used. The bit map is stored in bytes $A-$63. Each bit in these bytes represents a sector. If }the bit is a 1 then the sector is free to be used and if a 0 then the sector is already taken up. So bit 6 of byte $A, (Byte }$A uses bits 0-6, all the others use bits 0-7), stands for sector 1, bit 5 for sector 2, bit 4 for sector 3 and so on until b}it 0 of byte $63 stands for sector $2D0. The rest of the bytes are unused.(see below) 0 1 2 3 4 5 6 7$0000: }$00C5 $0230 $0100 $0000 .E.0....$0008: $0000 $0000 $0000 $0000 ........$0010: $0000 $0000 $0000 $0000 ........$0018: $0}000 $0000 $0000 $0000 ........$0020: $0000 $0000 $0000 $0000 ........$0028: $0000 $0000 $0000 $0000 ........$0030: $000}0 $0000 $0000 $0000 ........$0038: $0000 $0000 $0000 $FFFF ........$0040: $FFFF $FFFF $FFFF $FFFF ........$0048: $FFFF }$FFFF $FFFF $FFFF ........$0050: $FFFF $FFFF $FFFF $FFFF ........$0058: $FFFF $FFFF $FFFF $FFFF ........$0060: $FFFF $F}FFF $0000 $0000 ........$0068: $0000 $0000 $0000 $0000 ........$0070: $0000 $0000 $0000 $0000 ........$0078: $0000 $000}0 $0000 $0000 ........Sectors 1-$1A0 are used.Sectors $1A1 to $2D0 are free.THE DIRECTORYThe directory is where the }computer keeps track of your files and it resides at sectors $269-$270. It is 16 bytes long and stores the status of the file}, the starting point on the disk, the number of sectors in the file , and the file name and the extension. Below is a sample }directory. 0 1 2 3 4 5 6 7$0000: $460E $0004 $0044 $4F53 F....DOS$0008: $2020 $2020 $2053 $5953 SYS$}0010: $4615 $0012 $0044 $5550 f....DUP$0018: $2020 $2020 $2053 $5953 SYS$0020: $0000 $0000 $0000 $0000 ........$00}28: $0000 $0000 $0000 $0000 ........$0030: $0000 $0000 $0000 $0000 ........$0038: $0000 $0000 $0000 $0000 ........$0040}: $0000 $0000 $0000 $0000 ........$0048: $0000 $0000 $0000 $0000 ........$0050: $0000 $0000 $0000 $0000 ........$0058: }$0000 $0000 $0000 $0000 ........$0060: $0000 $0000 $0000 $0000 ........$0068: $0000 $0000 $0000 $0000 ........$0070: $0}000 $0000 $0000 $0000 ........$0078: $0000 $0000 $0000 $0000 ........ Byte 0 is the flag byte which stores the stat}us. Bit 7 is the file delete bit and if =1 the file has been deleted. If bit 6 is a 1 the file is in use. Bit 5 is a 1 if the } file is locked, and bit 0 is a 1 if the file is open for output. Lets take the first entry in the directory for an example. !}$46= 01000110 in binary. Bits 6,2,1 are set therefore the file is in use, (bit6=1), the file is not locked or deleted, or ope"}n (bits 7,5,0=0). Bits 2 and 1 are not defined so they must have a special function for the DOS I am using, (MYDOS from "Word#}mark Systems"). Bytes 1 & 2 hold the sector count (low,high byte), and bytes 3 & 4 hold the starting sector number. Bytes 5$}-$F represent the file name and the extension. So DOS.SYS starts at sector 4 and is $E sectors long.What is DOS?DOS stan%}ds for Disk Operating System and is a program that your computer loads in to tell it how to talk with your disk drive. This p&}rogram allows you to open, close, read from, write to, and delete your files. It also tells your computer how to format the d'}isk. When the computer loads this file it is called booting. The boot sequence on the ATARI is a two stage process. First The(} computer accesses an invisible program stored in sectors 1-3. This program has no file name and cannot be deleted by normal )}methods . It tells the computer how to load the main program "DOS.SYS". When DOS.SYS is loaded it executes and does the follo*}wing: 1. Move the low memory pointer to just below where it resides. 2. See if there is a AUTORUN.SYS file and if so execu+}te it. 3. Check for a cartridge and if so go to it. 4. Otherwise load the DUP.SYS program.What DUP.SYS does is to make th,}e routines in DOS.SYS user friendly. Let's take a look at what you would have to do just to copy a file without DUP. First se-}t up the necessary memory locations with the data for a file name, open the file, open a destination file , allocate memory f.}or a copy (now where was that free block ......) load the first file in, see if it fits, set marker if it doesn't, copy the d/}ata to the second file (oops need to tell the user to change disks, SORRY), write out the data, and finally close the files. 0}Isn't it a lot easier to just press the 'O' for duplicate file?????Different File FormatsBASICBASIC files are stored on1} disk in two different formats. The first is in ASCII which is created by using the LIST command, and the second is in compre2}ssed format. The list format is really quite easy, what you see is what you get. The program appears on the disk exactly as i3}t would if you listed it. the only difference is that at the end of each line a $9B, (carriage Return), appears to mark the e4}nd of that line and the last 3 bytes of the sector point to the next sector.The compressed mode is much more difficult to d5}eal with. Because of the complexity I will give you a brief overview. For more information I would advise reading "The Atari 6}BASIC SOURCE BOOK" by Bill Wilkinson,Kathleen O'Brien, and Paul Laughton, published by COMPUTE!. This book tells all and will7} save you the many hours I spent discovering what was going on in that little cartridge. (I had a program I desperately neede8}d to salvage from a crashed disk!). When you type 'SAVE' and a file name BASIC saves the program in the following form: Byt9}e 0-1 Zeros are stored here. Byte 2-3 The displacement of the variable name table + 256 ($100) Byte 4-5 Not used. By:}te 6-7 The displacement of the variable value table+256 ($100) Byte 8-9 The displacement of the statement table+256 ($1;}00) Byte 10-11 Not used Byte 12-14 The length of the 3 tables VNT,VVT, and ST. Byte 15- The VNT then the VVT and then th<}e ST. one right after the otherThe variable name table is the actual variable names with the last letter having $80 added t=}o it. This way no extra byte is needed to mark the end of each variable. The variable value table is composed of eight bytes.>} The first byte is the variable type, the second byte is the variable name it matches in the VNT, and the last six bytes depe?}nd upon what type of variable it is. The statement table contains the following data, in order. The two byte line number T@}he one byte line length The one byte statement length The one byte statement name token The tokenized statement (variable A}length) The one byte end of statement token The one byte end of line tokent name token The tokenized statement (variable MText FilesThese are the simplest files to restore although you may lose part of it. The program appears on the disk exactl!C}y as it would if you listed it. the only difference is that at the end of each line a $9B, (Carriage Return), appears to mark!D} the end of that line and the last 3 bytes of the sector point to the next sector.Machine Language FilesMachine language!E} files are really not all that hard to restore. All you need is a assembly listing with the hexadecimal object code, some pat!F}ience, a nack for typing in hexadecimal numbers without transposing or changing digits, and about three weeks to restore your!G} sanity after you have finished. Of course I'm kidding???? Realistically unless you have a backup, or the sector that was los!H}t was just text data or screen data your out of luck. The problem is that in machine language trying to reconstruct what the !I}programmer had put there is very difficult. Since a jump to subroutine command is just three bytes long or a critical branch !J}is 2 bytes it is very easy to make a mistake and send the program into never-never land. However do you think that is going t!K}o stop me from telling you all about it? Nooooooooo, because there are times when you will need to do it.The times when you!L} will want to restore/modify a machine language program are: 1. When you don't want to go through another assembly because !M}it's only a test modification, SCAN mode really saves time here in locating the sector 2. When you only have one copy of a !N}very expensive program and the publisher wants a high price for a backup or replacement disk and the disk is copy protected.!O}Machine language files have the following format. The first six bytes of the file hold most of the information. The first tw!P}o bytes are always $FF. This identifies the file as being a ML file. Bytes 2 & 3, (LSB,MSB), hold the starting address of th!Q}e program and bytes 4 & 5 hold the ending address of the program. After these bytes comes the program. At the end of the prog!R}ram something very interesting happens. The number of bytes marker that resides in the last 3 bytes of the sector is bigger t!S}hen it should be. Why? Because the end of the program is where the DOS puts the auto execute and initialization addresses. Fo!T}r more information on these I advise reading "Inside Atari DOS" published by COMPUTE!. Now for those of you that have e!U}xpensive software and don't have back-ups, here are some tips on how to make your life a lot easier if you need to restore yo!V}ur disk. First use T to set the title of the disk. Then goto SCAN mode and search the entire disk (sectors 1-720) for a hex c!W}ombination that the program isn't likely to find, $89 $89 3 3 $EF $EF is a good series. You will get an error every time scan!X} encounters a bad sector. If the error is 144 you can just hit the space bar and SCAN will continue on, if not then you will !Y}have to restart SCAN with the search value starting at the next sector. In either case write down the sector number that caus!Z}ed the error. Then try a list directory. If you succeed and the program you want is listed do a "Print ALL Sectors in the Cha![}in" and send the entire thing to your printer. If there is no usable directory listing you must print out the entire disk ski!\}pping all the bad sectors. This will use up quite a lot of paper (5 sectors per sheet) but paper is cheaper than the program.!]} When this listing is finished put it in a safe place and >>>pray<<< that you will never need it. This way you have saved the!^} sector information in case you need to restore a sector.Some Final CommentsFor those of you who find themselves working !_}with this program often or for anyone who works with machine language I would suggest getting an HP16C calculator from Hewlet!`}t-Packard. This calculator has saved me numerous hours and has definitely paid for itself. If you would like to see som!a}e utility or software written that isn't currently available, drop me a line. If I use the idea I'll send you a free copy of !b}the published version. This utility was written to help an average user learn about what is happening on the disk, to !c}give you a fighting chance in restoring crashed disks, and for the programmer who wants to make a quick modification to a dis!d}k file. This program was written using ACTION! ACTION! is a trademark of Action computer services. Portions of this pro!e}gram are (c) 1984, A.C.S.was written using ACTION! ACTION! is a trademark of Action computer services. Portions of this pro AppendixDISK SCAN SETUPThis utility gives you the ability to set up the Diskscan's default parameters. Your printer's %g}underline control codes are specified here also. The first screen is shown below.LOADING INSTRUCTIONS1. You must load al%q}B'DOS SYSB*+DUP SYSB UFONT SETB)^AUTORUN SYSB DOC 000B/DOC 001BBDOC 002BCDOC 003B$BDOC 004B$fDOC 005B3DOC 006BDOC 007BDOC 008l the utility programs on side 1 of the disk from DOS (with the exception of DISK SCANNER). 2. Boot DOS 2.0S a%r}nd go to the DUP.SYS menu. Choose option L (Binary Load) and type SETUP.EXE.3. The Setup program will load an%s}d run automatically.SCREEN #1 DISK SCAN SETUP This routine allows you to set up the default values for the Di%t}skscan program. Use a '$' at the start of the number for hex input. Enter in the drive you want for the default drive%u} (1-4) __ Enter in the default sector # __ Enter in the sector size. __ Enter in the sector link mask. For a standard AT%v}ARI drive this value is a 3. For double density, it is usually a $FF. See DISK SCAN docs for more details. __The unde%w}rlines denote where inputs are expected. For this screen and all those that follow the questions will be asked one at a time.%x} Therefore you would be asked for the default drive, and after you have answered that then it would ask for default sector, e%y}tc. As in the Diskscan program the default input mode is decimal so if you want to input a hex number you must put a '$' in f%z}ront of the number, ex. 100 decimal = $64 in hex. The default drive/ sector#/ sector size/ link mask is the one you want to h%{}ave the Diskscanner use when it begins execution. The sector size is 128 ($80) for standard ATARI disks and 256 ($100) for d%|}ouble density disks.SCREEN #2 This section sets up the sector range scan parameters, and the default output device. %}}It also sets the default starting address that is used when a sector is printed or disassembled. Enter in the starting%~} sector #. __ Enter in the ending sector #. __ Enter in the starting address. __ Do you want the output to go to the sc%}reen or the printer (S or P)? __On some of the scanning options you can scan a range of sectors. The first two questions as%}k you to define the working range. When a sector is printed or disassembled an address is printed beside it, with the third q%}uestion you define the default starting value. Finally the last question has you specify whether you want the output to be se%}nt to the screen or the printer.SCREEN #3 The following is to setup your printer controls. Byte input, separate byt%}es with spaces. Does your printer underline if the byte has a value > 127 (Y or N) __ Enter in the control sequence %}to tell your printer to start underlining. __ __ __ __ Enter in the control sequence to tell your printer to stop Unde%}rlining. __ __ __ __This is the most important section of the setup. All the other options can be redefined in Diskscanner,%} but the printer setups are only defined here. There are two ways printers know when to underline. The first method is the on%}e used by Centronics and most Atari printers. That is to underline when the data it is receiving is greater than 127 (bit 7 s%}et). The other method is to send the printer a control character sequence to tell it to start and stop underlining. Your prin%}ter manual should contain this information if you are not sure which is the case for you.If you have the first type of prin%}ter (i.e. underlines when the value is >127) then answer yes to the first question. The program will not ask you the second t%}wo questions. If you have the second type of printer (one that needs control codes) answer no to the first question. The prog%}ram will then ask you for the control sequence to have your printer start underlining. Enter in the control values, for examp%}le I have a NEC8023A printer and my start underlining control characters are ESC,X so my input would look like $1B $58. If yo%}u prefer decimal the input would be 27 88. The program will accept a sequence of up to 4 bytes. If your printer doesn't have %}underlining enter a 0 here. In the same manner answer the last question.Once the program has finished with its questions it%} will then build a data file on the disk named DISKSCAN.SU. When the diskscanner begins execution it will go to drive #1 and %}se that have more than one drive this allows you to use a drive other than drive 1.OPTION: Screen/Printer This tells the} program where you want the output to go. To see the toggling hold the option button down and watch the 'OUT=' part of the st}atus line.re you want the output to go. To see the toggling hold the option button down and watch the 'OUT=' part of the st look for this file and if it exists it will load in the customizing information. If it doesn't find the file, it will default%} to a standard Atari drive, and the Centronics printer format.ing information. If it doesn't find the file, it will default$@MACHINE LANGUAGE MONITORABSTRACTThe Machine Language Monitor and the Relocator are written for the assembly language pro)}grammer. Therefore the documentation that follows only gives the command information and does not attempt to describe any of )}the terms used. Use the Binary Load option from DOS 2 to load MLM.OBJ. Read all documentation to get a tho)}rough understanding of how this works with the relocator.The Machine Language Monitor (MLM) is 1937 ($791) bytes l)}ong and is used to monitor other machine language programs as they are executing. It gives you the capability of single stepp)}ing through a program, and modifying - the 6502 registers, the program counter and memory. One unique feature of this program)} is that it has its own screen. This allows you to monitor your program even though it may use a different graphics mode. The)} output of the program can be either in hex or ASCII and a help page is also avaliable. The RELOCATOR give you the ability )}to specify where you want the MLM and its screen to be loaded into memory. With this the MLM becomes relocatable so that you )}may place it in a free memory area so as not to affect your program. The MLM has the following commands. A: ASCII)} C: Single Step (Calls executed) D: Display Hex memory 'XXXX' E: Load PC and Exit H: Hex mode )} M: Modify A,X,Y,F,S,P,M S: Single step X: EXchange screens +: Scroll memory Forward -: Scro)}ll memory backward ?: Help page CR: Ends modify M ESC: ESCapes any input modeEach of the command keys i)}s automatically scanned by the MLM. You do not need to press the 'RETURN' key except where noted. For all the input command)}s the 'ESC' key will return you to the command mode.Command keys:A: (ASCII) The data will be displayed in ASCII. The prog)}ram will automatically replace any value that is not between $20 and $7D with a '.' C: (Single Step, Calls Executed) This )}will single step through the program pointed to by the PC. Any 'JSR' encountered will be executed in full. (See note 1)D: )}(Display Memory) This allows you to set the memory display to the location you wish to view. The format isD XXXX where the )}'XXXX' is the 4 digit hex memory address.E: (Exit) This loads the processor with the PC, the registers with their stored v)}alues and begins execution at the new location. There is no return to the MLM.H: (Hex mode) The data will be displayed in )}hex.M: (Modify) The modify command requires a second entry to tell it what to modify. These are listed below: (SEE notes )}2 & 3) A: (Mod A register) This modifies the a register. After pressing 'A' enter a 2 digit hex value for 'A'. X)}:Y:F:S: Same as the 'A reg' except this modifies the X, Y, Flag registers, and the Stack pointer respectively. P: (Mod )}PC) After pressing 'P' enter in the 4 digit hex value you want in the PC. M: (Mod Memory) After pressing the 'M' ente)}r in the 4 digit memory location you want. Then enter as many 2 digit hex values as you wish. The program will keep updating)} memory until you press 'RETURN' or the 'ESC' key. The display will then be updated so that you may check your input.S: (S)}ingle step) This responds like the 'C' command except that it single steps through the JSR's also.X: (EXchange Screens) T)}he MLM has its own screen. For clarity the MLM screen will be referred to as the 'M screen' and the screen that your program)} uses as the 'P screen'. To change from the M screen to the P screen just press the 'X' key. The P screen is now visible.)} MLM will not try to write on this screen. To return to the M screen just press the 'X' key again. The P screen can be in a)}ny graphics mode. Therefore, if your program generates graphics you can view the changes with this command.+: (Scroll mem)}ory forward) This key will scroll the memory display forward.-: (Scroll memory backward)?: (Help Page) This gives a s)}ummary of all the commands. To return to the normal display press any key.ESC: (ESCape) This key will return you to the co)}mmand mode from any input function.NOTE 1: If you do a 'JMP' into a ROM area the MLM will assume that you have a return a)}ddress on the stack. If the stack is > $FD the MLM will assume an exit and do nothing but execute the jump.NOTE 2: Using )}the 'BACK S' key on any input will be interpreted as an input value and not as a backspace.NOTE 3: If you are in ATASCII m)}ode when you input, the MLM will take the input as ATASCII and not hex values.Program memory usage Relative address )} ____________________ $0000 | | <- Used for initial | )} | start up. May be | | overwritten after | | progra)}m is executing | | with no ill effect. $0073 |------------------| )} | | | | <- Running program. | | )} | | | | | | )} | | | | | | | )} | | | | | | |)} | | | | | | )} | | | | | | | )} | $0698 |------------------| <- Help page is | | stored here. If )} | | you store a $FF | | at $0698 you may )}| | use the area from | | $0699 to $0791 with | )} | no ill effect. | | $0791 | | -------)}------------- Zero page usage: 0,1,6,7 are used. $0791 | | -------(ARELOCATOR This program allows you to move the MLM object in RAM memory and to specify where the monitor screen will be.-} WARNING: Do not delete the disk files RELOC.EXE or MAS.OBJ. These are the relocator and the machine language monitor sou-}rce respectively.To run the relocator do the following: 1) Remove any cartridge. 2) Turn disk drive on. 3) -}Place a DOS 2 disk in drive. 4) Turn on the computer. 5) When DOS menu appears, put the DISK SCANNER progra-}m disk in the drive and use the 'L' command to load the file 'RELOC.EXE' ( This is an auto execu-}te file) The first question the program will ask is : 'What do you want the starting address to be ?'. Enter in the 4 di-}git hex address of the location you would like the MLM to load at. The MLM is $791 bytes long. The second question you wi-}ll be asked is where do you want the debug screen to end. Enter in the 2 digit hex number for the page boundary you want the-} screen to end at. The program will respond with a summation of all the memory locations that will be used by the MLM. I-}f you want to make any changes answer 'Y' to the question at the end of the summation and the program will start over. If-} you answered no the program will respond by giving you the option to change the default name. If you want a different name -}enter 'Y' at this point. The computer will respond by asking you for a new name. Enter the name you wish without the 'D:' o-}r quotes as the program doesn't need either. Once more the computer will give you the option to make changes. When you a-}re done making changes and have answered 'N' to the questions the program will relocate the MLM and store it on the disk and -}exit to DOS. The relocated file may now be loaded. The MLM is not stored in auto- execute form so you must jump to its st-}arting address. The relocated file may now be loaded. The MLM is not stored in auto- execute form so you must jump to its st,DIRECTORY SORTEROn this disk are three programs to sort the directory. The first 'SDSORT.EXE' works with most single dens1}ity disks. 'DDSORT1.EXE and DDSORT2.EXE' are for double density disks. The Difference between 1 & 2 is that DDSORT1 only orde1}rs the directory and does not change the link list pointers where as DDSORT2 does update the link list pointers. The reason f1}or this is that some double density DOSes use the first 6 bits in the link as a file # marker and since the files were just r1}earranged the marker needs to be updated also. A safe bet is that if your DOS handles sector #'s bigger than $3FF then use DD1}SORT1 otherwise use DDSORT2.To use any of the programs simply load them from the DOS 2 menu using the binary load option (L1}). Then, place the disk you want sorted in the desired drive and press start. To exit press the RESET key. To change which d1}rive the program goes to press 1-4. 1 goes to drive 1,2 to drive 2, 3 to drive 3, and 4 to drive 4. That's all there is to it1}.When the program begins execution it will read in the disk directory and then display what it read on the screen. Then it 1}will remove any deleted files and sort the directory. After it is done sorting it will display the sorted directory. For eith1}er SDSORT or DDSORT2 the program will display the file names once more as it is updating the link lists of each file. Finally1} the program will write the new ordered directory to the disk and then start over. CAUTION: I would suggest making a backup1} of the disk before trying the sorter for the first time. After the disk is sorted try to load some of the programs on disk, 1}if they load then you can be fairly confident that you used the right program for your DOS. Also do NOT remove the disk while1} the sorter is running as you could damage your files!!!- - - - - - - - - - - - - - All programs/documentation on this d1}isk are copyrighted, 1985 by Michael Fleischmann and Antic Publishing, Inc. These materials may only be duplicated for perso1}nal archival purposes. Antic is not copy-protecting these materials because our corporate policy supports you, the end-user.1} You pay our salaries and keep us in business. If you need any help with this program, our customer service people and Mike1} will be happy to assist. Thank you for your support. eed any help with this program, our customer service people and Mike09